package com.treeroot.designMode.Decorator;

/**
 * 装饰模式 runner~~~~
 *
 * 通过继承和组合的方式，可以无限层次地给对象添加新的功能，而且每一层都只关心自己需要增加的功能，而不影响其他层。
 */
public class DecoratorPattern {
    public static void main(String[] args) {
        System.out.println("------原始的类实现-------------");
        Component p = new ConcreteComponent();
        p.operation();
        System.out.println("--------装饰完之后的类实现-----------");
        Component d = new ConcreteDecoratorA(p);
        d.operation();
        System.out.println("--------装饰完之后的类的基础之上的装饰-----------");
        Component d2 = new ConcreteDecoratorB(d);
        d2.operation();
    }
}
